package Negocio;
import java.sql.Date;
import java.util.Collection;

public abstract class Lote implements ClaseNegocio {
	
	private long codigo;
	private ItemMineral mineralPrincipal;
	private String tipo;
	private Collection <ItemMineral> mineralesComponentes;
	private double areaSiembra;
	private String estado;
	private Propietario prop;
	private Cosecha ultimaCosecha;
	
	


	public Lote (Long codigo,ItemMineral minPrin,String tipo,Collection <ItemMineral> minCompo, double area, Propietario prop, String estado){
		this.codigo = codigo;
		this.mineralPrincipal = minPrin;
		this.tipo = tipo;
		this.mineralesComponentes = minCompo;
		this.areaSiembra = area;
		this.prop = prop;
		this.estado = estado;
	}
	
	public long getCodigo() {
		return codigo;
	}

	public void setCodigo(long nro) {
		this.codigo = nro;
	}
	public Collection<ItemMineral> getMineralesComponentes() {
		return mineralesComponentes;
	}

	public void setMineralesComponentes(Collection<ItemMineral> mineralesComponentes) {
		this.mineralesComponentes = mineralesComponentes;
	}

	public ItemMineral getMineralPrincipal() {
		return mineralPrincipal;
	}

	public void setMineralPrincipal(ItemMineral mineralPrincipal) {
		this.mineralPrincipal = mineralPrincipal;
	}
	
	public double getAreaSiembra() {
		return areaSiembra;
	}

	public void setAreaSiembra(double areaSiembra) {
		this.areaSiembra = areaSiembra;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public String getTipo() {
		return tipo;
	}

	public void setProp(Propietario prop) {
		this.prop = prop;
	}

	public Propietario getProp() {
		return prop;
	}

	public Cosecha getUltimaCoseacha() {
		return ultimaCosecha;
	}

	public void setUltimaCoseacha(Cosecha ultimaCoseacha) {
		this.ultimaCosecha = ultimaCoseacha;
	}
	
	public abstract LoteView getView ();
	
	public abstract void insert();
	
	public abstract void update();
	
	public abstract void delete();

	public boolean mineralPrincipal40() {
		if(mineralPrincipal.getPorcentaje()>40)
			return true;
		return false;
	}
	
	public boolean disponible(){
		java.util.Date d = new java.util.Date();
		Date fecha = new Date(d.getTime());
		if(ultimaCosecha == null){
			return true;
		}else if(Date.valueOf(ultimaCosecha.getFechaFinPeriodo().substring(0,10)).before(fecha)){
			return true;
		}else
			return false;
		
	}






}
